package com.hzit.payweb.controller;

import com.hzit.paycommon.paycommonapi.req.PayQueryReq;
import com.hzit.paycommon.paycommonapi.req.PayReq;
import com.hzit.paycommon.paycommonapi.resp.RespVo;
import com.hzit.payweb.service.IPayService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

/**
 * 支付接口
 */
@RestController
@RequestMapping("/pay")
public class PayController {

    private Logger logger = LoggerFactory.getLogger(PayController.class);

    @Autowired
    private IPayService iPayService;

    /**
     *
     * 重复支付：接口幂等处理
     * 支付统一入口
     */
    @RequestMapping(value = "/create",method = RequestMethod.POST)
    public RespVo pay(@Validated @RequestBody PayReq payReq ){
        logger.info("接受到支付请求，请求参数：{}....",payReq);
        //调用支付service
        RespVo respVo = iPayService.payCreate(payReq);
        logger.info("支付接口返回参数：{}....",respVo);
        return respVo;
    }


    /**
     * 业务系统主动查询
     * 支付结果查询: 1.订单系统无法确认订单状态的。
     */
    @RequestMapping(value = "/query",method = RequestMethod.POST)
    public RespVo query(@Validated @RequestBody PayQueryReq payQueryReq ){
        logger.info("接受到支付结果查询请求请求，请求参数：{}....",payQueryReq);
        return  iPayService.payResultQuery(payQueryReq);
    }


    /**
     *  定时任务：定时去扫描支付中状态数据
     *  查询支付中间状态的数据
     */
    @RequestMapping(value = "/queryTrdeing/{payWay}",method = RequestMethod.GET)
    public RespVo queryTrdeing(@PathVariable("payWay") String payWay){
        logger.info("获取支付中的支付流水，请求参数：{}....",payWay);
        return  iPayService.queryTradeing(payWay);
    }
}
